//package com.gobang.service;
//
//import com.gobang.domain.dto.MoveRequestDTO;
//import com.gobang.domain.dto.MoveResponseDTO;
//import com.gobang.domain.dto.SurrenderRequestDTO;
//import com.gobang.domain.vo.GameRoomVO;
//import com.gobang.domain.vo.SurrenderResponseVO;
//
///**
// * 游戏管理业务服务接口
// * 处理游戏核心业务逻辑
// *
// * @author System
// * @since 1.0.0
// */
//public interface GameService {
//
//    /**
//     * 查询游戏房间信息
//     *
//     * @param roomId 房间ID
//     * @param userId 用户ID
//     * @return 房间信息
//     */
//    GameRoomVO getRoomInfo(String roomId, Long userId);
//
//    /**
//     * 处理落子请求
//     *
//     * @param roomId 房间ID
//     * @param userId 用户ID
//     * @param row 行坐标
//     * @param col 列坐标
//     * @return 落子响应
//     */
//    MoveResponseDTO makeMove(String roomId, Long userId, int row, int col);
//
//    /**
//     * 处理认输请求
//     *
//     * @param request 认输请求
//     * @return 认输响应
//     */
//    SurrenderResponseVO surrender(SurrenderRequestDTO request);
//
//    /**
//     * 处理游戏结束
//     *
//     * @param roomId 房间ID
//     * @param winnerId 获胜者ID
//     */
//    void handleGameOver(String roomId, Long winnerId);
//
//    /**
//     * 获取游戏状态（WebSocket用）
//     *
//     * @param roomId 房间ID
//     * @param userId 用户ID
//     * @return 游戏状态更新消息
//     */
//    GameStateUpdateMessage getGameState(String roomId, Long userId);
//
//    /**
//     * 游戏状态更新消息类
//     */
//    class GameStateUpdateMessage {
//        private String type = "GAME_STATE_UPDATE";
//        private GameStateData data;
//
//        public GameStateUpdateMessage(GameStateData data) {
//            this.data = data;
//        }
//
//        public String getType() { return type; }
//        public GameStateData getData() { return data; }
//
//        public static class GameStateData {
//            private String roomId;
//            private String currentTurn;
//            private LastMove lastMove;
//            private Integer moveCount;
//            private String gameStatus;
//
//            public GameStateData(String roomId, String currentTurn, LastMove lastMove,
//                               Integer moveCount, String gameStatus) {
//                this.roomId = roomId;
//                this.currentTurn = currentTurn;
//                this.lastMove = lastMove;
//                this.moveCount = moveCount;
//                this.gameStatus = gameStatus;
//            }
//
//            // Getters
//            public String getRoomId() { return roomId; }
//            public String getCurrentTurn() { return currentTurn; }
//            public LastMove getLastMove() { return lastMove; }
//            public Integer getMoveCount() { return moveCount; }
//            public String getGameStatus() { return gameStatus; }
//        }
//
//        public static class LastMove {
//            private Integer row;
//            private Integer col;
//            private String color;
//
//            public LastMove(Integer row, Integer col, String color) {
//                this.row = row;
//                this.col = col;
//                this.color = color;
//            }
//
//            // Getters
//            public Integer getRow() { return row; }
//            public Integer getCol() { return col; }
//            public String getColor() { return color; }
//        }
//    }
//
//    /**
//     * 处理落子请求
//     *
//     * @param userId 用户ID
//     * @param roomId 房间ID
//     * @param row 行坐标
//     * @param col 列坐标
//     * @return 落子处理结果
//     */
//    MoveResult processMove(Long userId, String roomId, Integer row, Integer col);
//
//    /**
//     * 获取游戏状态
//     *
//     * @param roomId 房间ID
//     * @param userId 用户ID
//     * @return 游戏状态信息
//     */
//    GameStateResult getGameState(String roomId, Long userId);
//
//    /**
//     * 处理玩家认输
//     *
//     * @param userId 用户ID
//     * @param roomId 房间ID
//     * @return 认输处理结果
//     */
//    SurrenderResult processSurrender(Long userId, String roomId);
//
//    /**
//     * 落子处理结果
//     */
//    public static class MoveResult {
//        private boolean success;
//        private String roomId;
//        private MoveInfo move;
//        private String gameStatus;
//        private String nextTurn;
//        private boolean isGameOver;
//        private Long winnerId;
//        private String errorCode;
//        private String errorMessage;
//        private int[][] boardState;
//
//        // 构造函数和getter/setter
//        public MoveResult() {}
//
//        public MoveResult(boolean success, String roomId) {
//            this.success = success;
//            this.roomId = roomId;
//        }
//
//        public static MoveResult success(String roomId, MoveInfo move, String gameStatus,
//                                       String nextTurn, boolean isGameOver, Long winnerId, int[][] boardState) {
//            MoveResult result = new MoveResult(true, roomId);
//            result.setMove(move);
//            result.setGameStatus(gameStatus);
//            result.setNextTurn(nextTurn);
//            result.setGameOver(isGameOver);
//            result.setWinnerId(winnerId);
//            result.setBoardState(boardState);
//            return result;
//        }
//
//        public static MoveResult failure(String roomId, String errorCode, String errorMessage, String nextTurn) {
//            MoveResult result = new MoveResult(false, roomId);
//            result.setErrorCode(errorCode);
//            result.setErrorMessage(errorMessage);
//            result.setNextTurn(nextTurn);
//            result.setGameStatus("PLAYING");
//            result.setGameOver(false);
//            return result;
//        }
//
//        // Getters and Setters
//        public boolean isSuccess() { return success; }
//        public void setSuccess(boolean success) { this.success = success; }
//
//        public String getRoomId() { return roomId; }
//        public void setRoomId(String roomId) { this.roomId = roomId; }
//
//        public MoveInfo getMove() { return move; }
//        public void setMove(MoveInfo move) { this.move = move; }
//
//        public String getGameStatus() { return gameStatus; }
//        public void setGameStatus(String gameStatus) { this.gameStatus = gameStatus; }
//
//        public String getNextTurn() { return nextTurn; }
//        public void setNextTurn(String nextTurn) { this.nextTurn = nextTurn; }
//
//        public boolean isGameOver() { return isGameOver; }
//        public void setGameOver(boolean gameOver) { isGameOver = gameOver; }
//
//        public Long getWinnerId() { return winnerId; }
//        public void setWinnerId(Long winnerId) { this.winnerId = winnerId; }
//
//        public String getErrorCode() { return errorCode; }
//        public void setErrorCode(String errorCode) { this.errorCode = errorCode; }
//
//        public String getErrorMessage() { return errorMessage; }
//        public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; }
//
//        public int[][] getBoardState() { return boardState; }
//        public void setBoardState(int[][] boardState) { this.boardState = boardState; }
//    }
//
//    /**
//     * 游戏状态查询结果
//     */
//    public static class GameStateResult {
//        private boolean success;
//        private String roomId;
//        private String currentTurn;
//        private MoveInfo lastMove;
//        private Integer moveCount;
//        private String gameStatus;
//        private int[][] boardState;
//        private String errorCode;
//        private String errorMessage;
//
//        public GameStateResult() {}
//
//        public static GameStateResult success(String roomId, String currentTurn, MoveInfo lastMove,
//                                            Integer moveCount, String gameStatus, int[][] boardState) {
//            GameStateResult result = new GameStateResult();
//            result.setSuccess(true);
//            result.setRoomId(roomId);
//            result.setCurrentTurn(currentTurn);
//            result.setLastMove(lastMove);
//            result.setMoveCount(moveCount);
//            result.setGameStatus(gameStatus);
//            result.setBoardState(boardState);
//            return result;
//        }
//
//        public static GameStateResult failure(String errorCode, String errorMessage) {
//            GameStateResult result = new GameStateResult();
//            result.setSuccess(false);
//            result.setErrorCode(errorCode);
//            result.setErrorMessage(errorMessage);
//            return result;
//        }
//
//        // Getters and Setters
//        public boolean isSuccess() { return success; }
//        public void setSuccess(boolean success) { this.success = success; }
//
//        public String getRoomId() { return roomId; }
//        public void setRoomId(String roomId) { this.roomId = roomId; }
//
//        public String getCurrentTurn() { return currentTurn; }
//        public void setCurrentTurn(String currentTurn) { this.currentTurn = currentTurn; }
//
//        public MoveInfo getLastMove() { return lastMove; }
//        public void setLastMove(MoveInfo lastMove) { this.lastMove = lastMove; }
//
//        public Integer getMoveCount() { return moveCount; }
//        public void setMoveCount(Integer moveCount) { this.moveCount = moveCount; }
//
//        public String getGameStatus() { return gameStatus; }
//        public void setGameStatus(String gameStatus) { this.gameStatus = gameStatus; }
//
//        public int[][] getBoardState() { return boardState; }
//        public void setBoardState(int[][] boardState) { this.boardState = boardState; }
//
//        public String getErrorCode() { return errorCode; }
//        public void setErrorCode(String errorCode) { this.errorCode = errorCode; }
//
//        public String getErrorMessage() { return errorMessage; }
//        public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; }
//    }
//
//    /**
//     * 认输处理结果
//     */
//    public static class SurrenderResult {
//        private boolean success;
//        private String roomId;
//        private Long winnerId;
//        private String gameStatus;
//        private String errorCode;
//        private String errorMessage;
//
//        public SurrenderResult() {}
//
//        public static SurrenderResult success(String roomId, Long winnerId, String gameStatus) {
//            SurrenderResult result = new SurrenderResult();
//            result.setSuccess(true);
//            result.setRoomId(roomId);
//            result.setWinnerId(winnerId);
//            result.setGameStatus(gameStatus);
//            return result;
//        }
//
//        public static SurrenderResult failure(String errorCode, String errorMessage) {
//            SurrenderResult result = new SurrenderResult();
//            result.setSuccess(false);
//            result.setErrorCode(errorCode);
//            result.setErrorMessage(errorMessage);
//            return result;
//        }
//
//        // Getters and Setters
//        public boolean isSuccess() { return success; }
//        public void setSuccess(boolean success) { this.success = success; }
//
//        public String getRoomId() { return roomId; }
//        public void setRoomId(String roomId) { this.roomId = roomId; }
//
//        public Long getWinnerId() { return winnerId; }
//        public void setWinnerId(Long winnerId) { this.winnerId = winnerId; }
//
//        public String getGameStatus() { return gameStatus; }
//        public void setGameStatus(String gameStatus) { this.gameStatus = gameStatus; }
//
//        public String getErrorCode() { return errorCode; }
//        public void setErrorCode(String errorCode) { this.errorCode = errorCode; }
//
//        public String getErrorMessage() { return errorMessage; }
//        public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; }
//    }
//
//    /**
//     * 棋子移动信息
//     */
//    public static class MoveInfo {
//        private Integer row;
//        private Integer col;
//        private String color;
//
//        public MoveInfo() {}
//
//        public MoveInfo(Integer row, Integer col, String color) {
//            this.row = row;
//            this.col = col;
//            this.color = color;
//        }
//
//        // Getters and Setters
//        public Integer getRow() { return row; }
//        public void setRow(Integer row) { this.row = row; }
//
//        public Integer getCol() { return col; }
//        public void setCol(Integer col) { this.col = col; }
//
//        public String getColor() { return color; }
//        public void setColor(String color) { this.color = color; }
//    }
//}